home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Czech Logic, Card & Gambling Games
/
Logické hry.iso
/
hry
/
Fish Fillets
/
script
/
pavement
/
code.lua
next >
Wrap
Text File
|
2005-07-16
|
16KB
|
430 lines
-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
initModels()
sound_playMusic("music/rybky02.ogg")
local pokus = getRestartCount()
-- -------------------------------------------------------------
local function prog_init_room()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
room.pocetrad = 0
room.kdydalsi = random(200) + 200
room.posluvod = random(5)
room.konce = {}
return function()
if no_dialog() and isReady(small) and isReady(big) then
if room.kdydalsi > 0 then
room.kdydalsi = room.kdydalsi - 1
end
if room.kdydalsi == 0 then
room.pocetrad = room.pocetrad + 1
room.kdydalsi = (random(200) + 100) * (room.pocetrad + 2)
pom1 = random(4)
if pom1 == room.posluvod then
pom1 = 4
end
room.posluvod = pom1
vladce:planDialog(20, "dir-hs-uvod"..pom1)
if countPairs(room.konce) < 9 then
repeat
pom1 = random(9)
until not room.konce[pom1]
else
room.konce = {}
pom1 = random(9)
end
room.konce[pom1] = true
vladce:planDialog(0, "dir-hs-konec"..pom1)
if room.pocetrad >= 5 then
pom1 = random(6)
else
pom1 = random(room.pocetrad + 1)
end
adddel(random(10))
if pom1 > 0 then
switch(random(2)){
[0] = function()
addm(0, "dir-m-rada"..(pom1 - 1))
end,
[1] = function()
addv(0, "dir-v-rada"..(pom1 - 1))
end,
}
end
end
end
end
end
-- -------------------------------------------------------------
local function prog_init_vladce()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
vladce.ksichty = 0
vladce.faze = 0
return function()
vladce.afaze = vladce.afaze + 1
local anim_table = {
[0] = function()
if vladce:isTalking() then
vladce.ksichty = random(4) + 1
end
end,
[1] = function()
if math.mod(game_getCycles(), 2) == 0 then
if vladce:isTalking() then
pom1 = random(3)
else
pom1 = 3
end
switch(vladce.ksichty){
[1] = function()
switch(pom1){
[0] = function()
vladce.afaze = 1
end,
[1] = function()
vladce.afaze = 15
end,
[2] = function()
vladce.afaze = 18
end,
[3] = function()
vladce.afaze = 1
end,
}
end,
[2] = function()
switch(pom1){
[0] = function()
vladce.afaze = 4
end,
[1] = function()
vladce.afaze = 16
end,
[2] = function()
vladce.afaze = 20
end,
[3] = function()
vladce.afaze = 1
end,
}
end,
[3] = function()
switch(pom1){
[0] = function()
vladce.afaze = 14
end,
[1] = function()
vladce.afaze = 17
end,
[2] = function()
vladce.afaze = 19
end,
[3] = function()
vladce.afaze = 14
end,
}
end,
[4] = function()
switch(pom1){
[0] = function()
vladce.afaze = 6
end,
[1] = function()
vladce.afaze = 15
end,
[2] = function()
vladce.afaze = 18
end,
[3] = function()
vladce.afaze = 11
end,
}
end,
}
if pom1 == 3 then
vladce.ksichty = 0
end
end
end,
[10] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[1] = function()
vladce.afaze = 5
end,
[2] = function()
vladce.afaze = 9
end,
[3] = function()
vladce.afaze = 10
end,
[4] = function()
vladce.ksichty = 0
end,
}
end,
[11] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[1] = function()
vladce.afaze = 9
end,
[2] = function()
vladce.afaze = 5
end,
[3] = function()
vladce.afaze = 1
end,
[4] = function()
vladce.ksichty = 0
end,
}
end,
[12] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[1] = function()
vladce.afaze = 6
end,
[2] = function()
vladce.afaze = 7
end,
[3] = function()
vladce.afaze = 11
end,
[4] = function()
vladce.ksichty = 0
end,
}
end,
[13] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[1] = function()
vladce.afaze = 7
end,
[2] = function()
vladce.afaze = 6
end,
[3] = function()
vladce.afaze = 1
end,
[4] = function()
vladce.ksichty = 0
end,
}
end,
[14] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[1] = function()
vladce.afaze = 9
end,
[2] = function()
vladce.afaze = 5
end,
[3] = function()
vladce.afaze = 14
end,
[4] = function()
vladce.ksichty = 0
end,
}
end,
[20] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[1] = function()
vladce.afaze = 6
end,
[2] = function()
vladce.afaze = 8
end,
[3] = function()
vladce.afaze = 8
end,
[4] = function()
vladce.afaze = 6
end,
[5] = function()
vladce.ksichty = 0
end,
}
end,
[21] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[2] = function()
vladce.afaze = 4
end,
[6] = function()
vladce.ksichty = 0
end,
default = function()
if isIn(vladce.faze, {1, 3, 5}) then
vladce.afaze = 1
end
end,
}
end,
[22] = function()
vladce.faze = vladce.faze + 1
switch(vladce.faze){
[2] = function()
vladce.afaze = 12
end,
[6] = function()
vladce.ksichty = 0
end,
default = function()
if isIn(vladce.faze, {1, 3, 5}) then
vladce.afaze = 11
end
end,
}
end,
}
anim_table[2] = anim_table[1]
anim_table[3] = anim_table[1]
anim_table[4] = anim_table[1]
switch(vladce.ksichty)(anim_table)
vladce.afaze = vladce.afaze - 1
vladce:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_xichtik()
return function()
if random(1000) < 5 then
xichtik.afaze = random(3)
end
xichtik:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_chobot()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
chobot.lastdir = dir_no
chobot.oci = 0
chobot.chapadla = 0
chobot.akcnost = 2
return function()
if chobot.dir ~= dir_no then
chobot.akcnost = 7
elseif chobot.akcnost > 2 and math.mod(game_getCycles(), 5) == 0 then
chobot.akcnost = chobot.akcnost - 1
end
if chobot.dir ~= chobot.lastdir then
if not chobot:isTalking() then
if chobot.dir == dir_down then
chobot:talk("k1-chob-p", VOLUME_FULL)
elseif chobot.dir ~= dir_no then
switch(random(3)){
[0] = function()
chobot:talk("k1-chob-1", VOLUME_FULL)
end,
[1] = function()
chobot:talk("k1-chob-2", VOLUME_FULL)
end,
[2] = function()
chobot:talk("k1-chob-3", VOLUME_FULL)
end,
}
end
end
chobot.lastdir = chobot.dir
end
if chobot.dir == dir_no and math.mod(game_getCycles(), chobot.akcnost) == 0 then
if random(2) == 0 then
if chobot.chapadla < 2 then
chobot.chapadla = chobot.chapadla + 1
else
chobot.chapadla = 0
end
else
if chobot.chapadla > 0 then
chobot.chapadla = chobot.chapadla - 1
else
chobot.chapadla = 2
end
end
end
pomb1 = xdist(small, chobot) == 0 and ydist(small, chobot) <= 0 and ydist(small, chobot) > -2 or xdist(big, chobot) == 0 and ydist(big, chobot) <= 0 and ydist(big, chobot) > -2
pomb1 = pomb1 or chobot.dir ~= dir_no
if pomb1 then
chobot.oci = 1
end
switch(chobot.oci){
[0] = function()
if random(100) < 5 then
chobot.oci = 2
end
end,
[2] = function()
if random(100) < 7 then
chobot.oci = 0
end
end,
[1] = function()
if not pomb1 and random(100) < 20 then
chobot.oci = 0
end
end,
}
chobot.afaze = chobot.oci + 3 * chobot.chapadla
chobot:updateAnim()
end
end
-- --------------------
local update_table = {}
local subinit
subinit = prog_init_room()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_vladce()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_xichtik()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_chobot()
if subinit then
table.insert(update_table, subinit)
end
return update_table
end
local update_table = prog_init()
-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
for key, subupdate in pairs(update_table) do
subupdate()
end
end